package br.pucrio.inf.aaaong.models.domain.database.dao.basic;

import java.sql.SQLException;

import br.pucrio.inf.aaaong.models.database.exceptions.PostgreSQLConstraintException;
import br.pucrio.inf.aaaong.models.database.update.UpdateQueryExecutor;
import br.pucrio.inf.aaaong.models.database.update.UpdateQueryParamsPreparer;
import br.pucrio.inf.aaaong.models.database.update.UpdateQueryParamsSetter;
import br.pucrio.inf.aaaong.models.domain.database.dao.basic.beans.EscolaridadeBean;

public class EscolaridadeDAO {

	private static final String QUERY_INSERT = "insert into Escolaridade(instituicao_de_ensino,"
			+ "id_adolescente,turno,ano_de_ingresso,termino_previsto,nivel_de_ensino,serie,"
			+ "periodo,curso) values(?,?,?,?,?,?,?,?,?)";
	private UpdateQueryExecutor queryExecutor;

	public EscolaridadeDAO(UpdateQueryExecutor queryExecutor) {
		this.queryExecutor = queryExecutor;
	}

	public void insert(final EscolaridadeBean escolaridade) throws PostgreSQLConstraintException {
		queryExecutor.execute(QUERY_INSERT, new UpdateQueryParamsPreparer() {
			
			@Override
			public void prepareParameters(UpdateQueryParamsSetter params) throws SQLException {
				params.setString(escolaridade.getInstituicaoDeEnsino());
				params.setInt(escolaridade.getIdAdolescente());
				params.setString(escolaridade.getTurno());
				params.setInt(escolaridade.getAnoDeIngresso());
				params.setCalendar(escolaridade.getTerminoPrevisto());
				params.setString(escolaridade.getNivelEnsino());
				params.setInt(escolaridade.getSerie());
				params.setInt(escolaridade.getPeriodo());
				params.setString(escolaridade.getCurso());
			}
		});
	}

}
